﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CEntidades;
using System.Data;
using System.Data.SqlClient;

namespace CDatos{
    public class dProducto{

        public static int EditarProducto(eProducto p){
            SqlCommand cmd = null;
            SqlDataReader dr = null;
            int resultado = 0;
            try{
                Conexion cn = new Conexion();
                SqlConnection conex = cn.conectar();
                cmd = new SqlCommand("uspEditarProducto", conex);
                cmd.Parameters.AddWithValue("@prmDetalle", p.Detalle);
                cmd.Parameters.AddWithValue("@prmNombre", p.Nombre);
                cmd.Parameters.AddWithValue("@prmImagen", p.Imagen);
                cmd.Parameters.AddWithValue("@prmDImagen", p.DImagen);
                cmd.Parameters.AddWithValue("@prmPrecio", p.Precio);
                cmd.Parameters.AddWithValue("@prmStock", p.Stock);
                cmd.Parameters.AddWithValue("@prmidCategoria", p.idCategoria);
                cmd.Parameters.AddWithValue("@prmidProducto", p.IdProducto);
                cmd.CommandType = CommandType.StoredProcedure;
                conex.Open();
                resultado = cmd.ExecuteNonQuery();
            }catch{
                resultado = 0;
            }finally{
                cmd.Connection.Close();
            }
            return resultado;
        }  


        public static eProducto BuscarProducto(int idProducto){
            eProducto c = null;
            SqlCommand cmd = null;
            SqlDataReader dr = null;
            try{
                Conexion cn = new Conexion();
                SqlConnection conex = cn.conectar();
                cmd = new SqlCommand("uspBuscarProducto", conex);
                cmd.Parameters.AddWithValue("@prmidProducto", idProducto);
                cmd.CommandType = CommandType.StoredProcedure;
                conex.Open();
                dr = cmd.ExecuteReader();
                if (dr.Read()){
                    c = new eProducto();
                    c.IdProducto = Convert.ToInt32(dr["IdProducto"]);
                    c.Nombre = dr["Nombre"].ToString();
                    c.Detalle = dr["Detalle"].ToString();
                    c.Imagen = dr["Imagen"].ToString();
                    c.DImagen = dr["DImagen"].ToString();
                    c.Precio = Convert.ToDouble(dr["Precio"]);
                    c.Stock = Convert.ToDouble(dr["Stock"]);
                    c.idCategoria = Convert.ToInt32(dr["idCategoria"]);
                    c.Activo = Convert.ToInt32(dr["Activo"]);                    
                }
            }catch{
                c= null;
            }finally{
                cmd.Connection.Close();
            }
            return c;
        }

        public static int InsertarProducto(eProducto p){
            SqlCommand cmd = null;
            SqlDataReader dr = null;
            int resultado = 0;
            try{
                Conexion cn = new Conexion();
                SqlConnection conex = cn.conectar();
                cmd = new SqlCommand("uspInsertarProducto", conex);
                cmd.Parameters.AddWithValue("@prmDetalle", p.Detalle);
                cmd.Parameters.AddWithValue("@prmNombre", p.Nombre);
                cmd.Parameters.AddWithValue("@prmImagen", p.Imagen);
                cmd.Parameters.AddWithValue("@prmDImagen", p.DImagen);
                cmd.Parameters.AddWithValue("@prmPrecio", p.Precio);
                cmd.Parameters.AddWithValue("@prmStock", p.Stock);
                cmd.Parameters.AddWithValue("@prmidCategoria", p.idCategoria);
                cmd.CommandType = CommandType.StoredProcedure;
                conex.Open();
                resultado = cmd.ExecuteNonQuery();
            }catch{
                resultado =0;
            }finally{
                cmd.Connection.Close();
            }
            return resultado;
        }        
        public static List<eProducto> ListarProductosxCategorias(int Categoria){
            List<eProducto> Lista = null;
            SqlCommand cmd = null;
            SqlDataReader dr = null;
            try{
                Conexion cn = new Conexion();
                SqlConnection conex = cn.conectar();
                cmd = new SqlCommand("uspListarProductosxCategorias", conex);
                cmd.Parameters.AddWithValue("@prmintCategoria", Categoria);
                cmd.CommandType = CommandType.StoredProcedure;
                conex.Open();
                dr = cmd.ExecuteReader();
                Lista = new List<eProducto>();
                while (dr.Read()){
                    eProducto c = new eProducto();
                    c.IdProducto = Convert.ToInt32(dr["IdProducto"]);
                    c.Nombre = dr["Nombre"].ToString();
                    c.Detalle = dr["Detalle"].ToString();
                    c.Imagen = dr["Imagen"].ToString();
                    c.DImagen = dr["DImagen"].ToString();
                    c.Precio = Convert.ToDouble(dr["Precio"]);
                    c.Stock = Convert.ToDouble(dr["Stock"]);
                    c.idCategoria = Convert.ToInt32(dr["idCategoria"]);
                    c.Activo = Convert.ToInt32(dr["Activo"]);
                    Lista.Add(c);
                }
            }catch{
                Lista = null;
            }finally{
                cmd.Connection.Close();
            }
            return Lista;
        }
    }
}
